// Object是一个构造函数
// 1. Object.js
// 用于判断两个对象是否相等

// 以前判断对象是使用===
// 1. console.log(NaN===NaN) // false
// console.log(NaN === NaN);

// console.log(+0===-0) // true
// console.log(+0 === -0); // 其实这俩个存储的方式不一致

// 其他和===一致
// 除了一下俩点
// console.log(Object.is(NaN, NaN)); //true
// console.log(Object.is(+0, -0)); // false

// ===============================================

// Object.assign  对象混合(现在用展开运算符)
(function () {
  return;
  const obj1 = {
    a: 1,
    b: 2,
    c: 3,
  };
  const obj2 = {
    a: 789,
    d: "kkk",
  };
  // 混合最简单的方法
  const obj3 = {
    ...obj1,
    ...obj2,
  };
})();

//=====================================
// Object.getOwnPropertyNames 的枚举顺序
// 得到自己的所有的属性(之前就有, 没有排序)
// 如何排序,由浏览器厂商决定

// es6规定了该方法返回的数组的排序方式如下
// -先排数字(升序)
// -再排字母(按照书写顺序)

(function () {
  return;
  const obj = {
    d: 1,
    b: 2,
    a: 3,
    0: 0,
    2: 2,
  };
  const props = Object.getOwnPropertyNames(obj);
  console.log(props);
})();

// ==========================================
// 用于设置某个对象的隐式原型
// Object.setPrototypeOf
// 比如 Object.setPrototypeOf(obj1,obj2)
(function () {
  // return
  const obj1 = {
    a: 1,
  };
  const obj2 = {
    b: 2,
  };
  Object.setPrototypeOf(obj1, obj2);
  //   相当于 obj1.__proto__ = obj2
  console.log(obj1.b);
})();
